config-apache-ssl
Pour activer le SSL sur Apache via le port 443, voici les étapes principales :
🔧 1. Pré-requis
- Apache installé
- Un certificat SSL (auto-signé ou émis par une autorité de certification)
- Le module
ssl
activé (mod_ssl
)
📁 2. Activer le module SSL (si ce n’est pas déjà fait)
sudo a2enmod ssl
sudo systemctl restart apache2
🔐 3. Placer les certificats
Placez vos fichiers dans un répertoire (souvent /etc/ssl/certs
et /etc/ssl/private
), par exemple :
/etc/ssl/certs/mon_site.crt
/etc/ssl/private/mon_site.key
📝 4. Configurer un hôte virtuel pour le port 443
Créez ou modifiez un fichier comme /etc/apache2/sites-available/mon_site-ssl.conf
:
<VirtualHost *:443>
ServerName monsite.exemple.com
DocumentRoot /var/www/mon_site
SSLEngine on
SSLCertificateFile /etc/ssl/certs/mon_site.crt
SSLCertificateKeyFile /etc/ssl/private/mon_site.key
# Facultatif : chaîne d’autorité
SSLCertificateChainFile /etc/ssl/certs/chain.pem
<Directory /var/www/mon_site>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mon_site_error.log
CustomLog ${APACHE_LOG_DIR}/mon_site_access.log combined
</VirtualHost>
🚀 5. Activer le site SSL et redémarrer Apache
sudo a2ensite mon_site-ssl
sudo systemctl reload apache2
✅ 6. (Optionnel) Rediriger HTTP vers HTTPS
Ajoutez dans le fichier du port 80 :
<VirtualHost *:80>
ServerName monsite.exemple.com
Redirect permanent / https://monsite.exemple.com/
</VirtualHost>
📌 Vérification
- Vérifiez qu’Apache écoute bien sur le port 443 :
sudo ss -tlnp | grep :443
- Ouvrez dans un navigateur :
https://monsite.exemple.com
Voici une version complète de ton script Bash pour installer Zabbix avec PostgreSQL et activer le SSL sur Apache2 (port 443), même si Apache est déjà installé (il sera purgé et réinstallé proprement). Un certificat auto-signé est généré pour HTTPS.
✅ Script amélioré install_zabbix_ssl.sh
#!/bin/bash
# Variables
DB_NAME="zabbix"
DB_USER="zabbix"
DB_PASSWORD="zabbix" # Change ce mot de passe pour la production
SSL_DIR="/etc/ssl/zabbix"
DOMAIN=$(hostname -f)
echo "=== Mise à jour du système ==="
sudo apt update && sudo apt upgrade -y
echo "=== Suppression d'Apache si déjà installé ==="
sudo systemctl stop apache2
sudo apt purge -y apache2 apache2-utils apache2-bin apache2.2-common
sudo apt autoremove -y
sudo rm -rf /etc/apache2
echo "=== Réinstallation d'Apache ==="
sudo apt install -y apache2
echo "=== Installation des dépendances ==="
sudo apt install -y curl wget gnupg2 ufw openssl
echo "=== Ajout du dépôt Zabbix ==="
wget https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.2+debian12_all.deb
sudo dpkg -i zabbix-release_latest_7.2+debian12_all.deb
sudo apt update
echo "=== Installation de Zabbix et PostgreSQL ==="
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent postgresql postgresql-contrib
echo "=== Configuration de PostgreSQL ==="
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';"
sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
echo "=== Importation du schéma Zabbix ==="
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql $DB_NAME
echo "=== Configuration de Zabbix Server ==="
sudo sed -i "s/# DBPassword=/DBPassword=$DB_PASSWORD/" /etc/zabbix/zabbix_server.conf
sudo sed -i "s/DBName=zabbix/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
sudo sed -i "s/DBUser=zabbix/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
echo "=== Génération d'un certificat SSL auto-signé ==="
sudo mkdir -p "$SSL_DIR"
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout "$SSL_DIR/zabbix.key" \
-out "$SSL_DIR/zabbix.crt" \
-subj "/C=FR/ST=France/L=Paris/O=Zabbix/OU=IT/CN=$DOMAIN"
echo "=== Configuration d'Apache pour SSL ==="
sudo a2enmod ssl
cat <<EOF | sudo tee /etc/apache2/sites-available/zabbix-ssl.conf
<VirtualHost *:443>
ServerName $DOMAIN
DocumentRoot /usr/share/zabbix
SSLEngine on
SSLCertificateFile $SSL_DIR/zabbix.crt
SSLCertificateKeyFile $SSL_DIR/zabbix.key
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog \${APACHE_LOG_DIR}/zabbix-ssl-error.log
CustomLog \${APACHE_LOG_DIR}/zabbix-ssl-access.log combined
</VirtualHost>
EOF
sudo a2ensite zabbix-ssl
sudo systemctl reload apache2
echo "=== Redémarrage et activation des services ==="
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
echo "=== Configuration du pare-feu UFW ==="
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10050/tcp
sudo ufw allow 10051/tcp
sudo ufw reload
echo "=== Installation terminée ==="
echo "Interface Web disponible à :"
echo " - HTTP : http://$(hostname -I | awk '{print $1}')/zabbix/"
echo " - HTTPS : https://$(hostname -I | awk '{print $1}')/zabbix/"
📌 Notes
- Le certificat SSL est auto-signé : vous aurez une alerte de sécurité dans le navigateur.
- Pour un vrai domaine avec HTTPS valide, utilisez Let's Encrypt avec
certbot
. - Apache est entièrement purgé puis réinstallé.
- Zabbix est accessible via HTTP et HTTPS.
Le message "Active checks: [Zabbix agent] [unknown]" signifie que l’agent Zabbix ne parvient pas à contacter le serveur Zabbix pour les active checks.
🔍 Contexte
Zabbix distingue deux types de checks :
- ✅ Passive checks : le serveur interroge l’agent.
- 🔁 Active checks : l’agent envoie périodiquement des données au serveur.
Le message "unknown" indique que l’agent ne parvient pas à résoudre ou joindre le serveur Zabbix défini dans la directive ServerActive=
de zabbix_agentd.conf
.
✅ Étapes de résolution
1. Vérifie la config de l'agent
sudo grep -E '^Server|^ServerActive|^Hostname' /etc/zabbix/zabbix_agentd.conf
Tu devrais voir quelque chose comme :
Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=ubuntu
Assure-toi que :
ServerActive=
contient bien l'IP (ou nom DNS) du serveur ZabbixHostname=
correspond exactement au nom d’hôte défini dans l’interface Zabbix (onglet Configuration > Hosts)
2. Tester la résolution DNS si tu utilises un nom
Si ServerActive=zabbix.domain.local
, teste :
ping zabbix.domain.local
Si ça ne répond pas, utilise une IP dans
ServerActive
.
3. Redémarre l’agent après les modifications
sudo systemctl restart zabbix-agent
Puis vérifie les logs :
sudo journalctl -u zabbix-agent | tail -30
4. Vérifie que le serveur écoute sur le bon port (10051)
Sur le serveur Zabbix, exécute :
sudo ss -tlnp | grep 10051
Tu dois voir une ligne avec LISTEN
sur le port 10051.
Et vérifie que le pare-feu l'autorise :
sudo ufw allow 10051/tcp
5. Vérifie dans l’interface Zabbix
Dans Configuration → Hosts → [Ton hôte] :
- Le champ Agent interfaces est bien renseigné avec l’IP de l’agent ?
- Le champ "Host name" est exactement identique à la ligne
Hostname=
dans la config de l'agent ?
✅ Exemple de configuration correcte
Server=192.168.56.100
ServerActive=192.168.56.100
Hostname=ubuntu-agent
Et dans l’interface Zabbix, l’hôte s’appelle aussi ubuntu-agent
.
Souhaite-tu que je t’écrive une config corrigée basée sur ton cas ? Envoie :
- IP du serveur Zabbix
hostname
du client (hostname
ouhostnamectl
)- Et la sortie de
/etc/zabbix/zabbix_agentd.conf
(sans commentaires)
Merci, l’erreur suivante est très claire :
Get value from agent failed: cannot read response: cannot read from socket: [104] Connection reset by peer
Cela signifie que :
Le serveur Zabbix essaie d’interroger l’agent (passive check sur port 10050), mais l’agent ferme la connexion immédiatement.
✅ Résumé du problème
Ton serveur Zabbix (192.168.50.100) contacte l’agent Zabbix, mais :
- Le port est ouvert,
- La connexion est acceptée,
- Mais ensuite, l’agent refuse ou coupe la connexion → souvent à cause d'une mauvaise configuration dans
zabbix_agentd.conf
(en particulierServer=
).
🔧 Solution
1. 🔍 Vérifie la config de l’agent sur la machine cliente
sudo grep -E '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf
Tu dois avoir exactement ceci (adapté à ton cas) :
Server=192.168.50.100
Hostname=ubuntu-client # <- Ce nom doit aussi exister dans l'interface Zabbix
Erreurs fréquentes :
Server=127.0.0.1
au lieu de l'IP du serveur ZabbixServer=
vide ou mal formaté
2. 🔁 Redémarre l’agent
Après avoir corrigé le fichier :
sudo systemctl restart zabbix-agent
Et vérifie s’il écoute :
sudo ss -tlnp | grep 10050
3. 🔥 Vérifie le pare-feu
Sur la machine cliente (où tourne l’agent) :
sudo ufw allow 10050/tcp
4. ✅ Vérifie dans l’interface Zabbix
Dans Configuration → Hosts → [Ton hôte] :
- Dans "Agent interfaces", l'IP est celle de l’agent, par exemple
192.168.50.101
- Le champ "Host name" = correspond exactement à
Hostname=
dans le fichierzabbix_agentd.conf
5. 🧪 Tester localement si l’agent répond
Depuis le serveur Zabbix :
zabbix_get -s 192.168.50.101 -k agent.ping
Remplace
192.168.50.101
par l’IP réelle de l’agent.
Tu dois recevoir :
1
🔁 Résumé des actions à faire
Sur l'agent (machine cliente) :
sudo sed -i 's/^Server=.*/Server=192.168.50.100/' /etc/zabbix/zabbix_agentd.conf
sudo systemctl restart zabbix-agent
sudo ufw allow 10050/tcp
Puis, depuis le serveur Zabbix :
zabbix_get -s <IP_de_l_agent> -k agent.ping
Tu peux m’envoyer :
- La sortie de
grep -E '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf
- L’IP réelle de la machine agent
Et je te corrige ça ligne par ligne.
Le port par défaut de PostgreSQL (abrégé PSQL) est :
🔢 5432
📌 Détails techniques
-
Ce port est utilisé pour toutes les connexions entrantes (locales ou distantes) au serveur PostgreSQL.
-
Il est défini dans le fichier de configuration :
/etc/postgresql/15/main/postgresql.conf
(ou une autre version selon ton OS)
Ligne à vérifier :
port = 5432
🔐 Autoriser le port dans le pare-feu (UFW)
sudo ufw allow 5432/tcp
🌐 Accès distant (si nécessaire)
Si tu veux autoriser des connexions depuis une autre machine :
-
Dans
/etc/postgresql/15/main/postgresql.conf
, active :listen_addresses = '*'
-
Dans
/etc/postgresql/15/main/pg_hba.conf
, ajoute une ligne :host all all 192.168.0.0/24 md5
(remplace
192.168.0.0/24
par le réseau ou l’IP autorisé(e)) -
Redémarre PostgreSQL :
sudo systemctl restart postgresql
Si tu veux que je te prépare une config pour que Zabbix se connecte à PostgreSQL sur un hôte distant, donne-moi :
- L’IP du serveur PostgreSQL
- L’utilisateur utilisé
- Et si c’est local ou distant
Pour accéder à l'interface web de Zabbix (http://IP
/zabbix), voici les informations par défaut et ce que tu dois faire pour te connecter :
🔐 Identifiants par défaut de l’interface Zabbix
- Nom d’utilisateur :
Admin
(avec un A majuscule) - Mot de passe :
zabbix
⚠️ Tu devras changer ce mot de passe dès la première connexion pour des raisons de sécurité.
🌐 Accès à l’interface
Si ton serveur a l’IP 192.168.50.100
, ouvre dans ton navigateur :
http://192.168.50.100/zabbix
Tu peux aussi y accéder en HTTPS si tu as configuré un certificat SSL :
https://192.168.50.100/zabbix
🛠 Tu peux aussi réinitialiser le mot de passe Admin si nécessaire
Si tu as perdu l'accès à l'interface Zabbix, tu peux réinitialiser le mot de passe Admin en ligne de commande :
sudo -u postgres psql zabbix
Puis dans la console PostgreSQL :
UPDATE users SET passwd=md5('nouveaumotdepasse') WHERE alias='Admin';
\q
Remplace nouveaumotdepasse
par le mot de passe que tu veux.
Pas de souci ! L’erreur :
❌
zabbix_get: command not found
signifie simplement que l’outil zabbix-get
n’est pas encore installé sur le serveur Zabbix. Cet outil permet de tester les connexions vers les agents Zabbix.
✅ Pour installer zabbix-get
Sur le serveur Zabbix :
sudo apt update
sudo apt install zabbix-get -y
🧪 Ensuite, teste la connexion à l’agent
Exemple, si l'agent est sur 192.168.50.101
:
zabbix_get -s 192.168.50.101 -k agent.ping
Si ça fonctionne, tu verras :
1
Sinon, ça confirmera le type d’erreur (connection refused
, connection reset
, etc.)
Tu peux maintenant :
- Installer
zabbix-get
- M’envoyer le résultat de la commande
zabbix_get
après test
Merci pour le retour clair 👍 Le message :
❌
Get value error: cannot read from socket: [104] Connection reset by peer
signifie que :
✅ Le port 10050 est bien accessible, ❌ Mais l’agent Zabbix ferme la connexion, généralement parce que la config ne permet pas à ce serveur Zabbix d’y accéder.
🧠 Explication technique
L'agent lit la variable Server=
dans le fichier /etc/zabbix/zabbix_agentd.conf
.
Si l'IP de ton serveur Zabbix n’est pas listée, l’agent accepte la connexion TCP mais la ferme aussitôt.
✅ Étapes pour corriger
1. 📄 Vérifie (et corrige) la config de l’agent
Sur la VM où l'agent tourne (la cible) :
sudo nano /etc/zabbix/zabbix_agentd.conf
Assure-toi que tu as :
Server=192.168.50.100
Hostname=ubuntu-ovh
Remplace
192.168.50.100
par l’IP réelle de ton serveur Zabbix Remplaceubuntu-ovh
par le nom d’hôte défini dans l’interface Zabbix (Configuration > Hosts)
Si ton serveur Zabbix a plusieurs IP ou que tu veux tout autoriser temporairement :
Server=0.0.0.0/0
⚠️ Pas recommandé en production, uniquement pour test.
2. 🔁 Redémarre l’agent
sudo systemctl restart zabbix-agent
Et vérifie s’il tourne bien :
sudo systemctl status zabbix-agent
3. 🔥 Autorise le port 10050 dans UFW (sur l'agent)
sudo ufw allow 10050/tcp
sudo ufw reload
4. 🧪 Re-teste avec zabbix_get
Depuis ton serveur Zabbix :
zabbix_get -s IP_DE_L_AGENT -k agent.ping
Tu dois recevoir :
1
🛠️ Bonus : Affiche ce que tu as
Tu peux me copier-colle ceci :
grep -E '^Server|^Hostname' /etc/zabbix/zabbix_agentd.conf
hostname -I
Et depuis ton serveur Zabbix :
zabbix_get -s IP_DE_L_AGENT -k agent.ping